package com.doit.day01;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.Random;
import java.util.Scanner;

/**
 * 需求：使用redis模拟手机验证码发送，验证码有效期60s，
 * 验证验证码输入不能超过3次，超过3次今天就没机会了
 *
 * 1.让你输入手机号
 * 2.校验手机号对不对==》 正则匹配
 * 对发送验证码   生成验证码发送？？随机一位数 随机6次
 * redis要不要存一份(过期时间要不要设置)  ==》 我来说
 * 开始输入验证码
 * 拿着你输入的验证码和redis中取出来的对比
 *
 * //验证手机号
 * /**
 *  * 判断字符串是否符合手机号码格式
 *  * 移动号段:   134 135 136 137 138 139 147 148 150 151 152 157 158 159  165 172 178 182 183 184 187 188 198
 *  * 联通号段:   130 131 132 145 146 155 156 166 170 171 175 176 185 186
 *  * 电信号段:   133 149 153 170 173 174 177 180 181 189  191  199
 *  * 虚拟运营商: 170
  *String regex="^((13[0-9])|(14[5,6,7,9])|(15[^4])|(16[5,6])|(17[0-9])|(18[0-9])|(19[1,8,9]))\\d{8}$";
 */
public class _02_手机验证码练习 {
    public static void main(String[] args) {
        Jedis jedis = Util.getJedis();

        //获取键盘录入的对象
        Scanner sc = new Scanner(System.in);
        //小场景
        System.out.println("在一个月黑风高的夜晚，浩然打开了手机，浏览小网站，准备干点不可描述的事情！！！");
        System.out.println("尊贵的vip会员，请输入您的手机号，获取验证码登录！！！");
        String phone = sc.next();
        //验证手机号
        String regex="^((13[0-9])|(14[5,6,7,9])|(15[^4])|(16[5,6])|(17[0-9])|(18[0-9])|(19[1,8,9]))\\d{8}$";
        //正则匹配手机号
        boolean flag = phone.matches(regex);
        if(flag){
            //匹配上了
            //生成验证码
            String code = getCode();
            System.out.println("验证码已经发送到您的手机上了，验证码是："+code);
            //放到redis中，并且设置过期时间
            jedis.setex(phone,60,code);

            int cnt = 3;
            while (cnt >= 1){
                //自己输入验证码
                System.out.println("请输入您的验证码：");
                String yourCode = sc.next();
                //你的验证码和redis中的比较
                if (yourCode.equals(jedis.get(phone))){
                    System.out.println("尽情享受吧！！！");
                    break;
                }else {
                    cnt--;
                    System.out.println("你的验证码输入错误，请重新输入，你还有"+cnt+"次机会！");
                }
            }
        }else {
            //没有匹配上
            System.out.println("滚，手机号都输入不对！！！");
        }



    }

    public static String getCode(){
        StringBuilder sb = new StringBuilder();
        //生成随机数
        Random random = new Random();
        for (int i = 6; i > 0; i--) {
            int num = random.nextInt(10);
            sb.append(num);
        }
        return sb.toString();
    }

}
